home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 52
/
Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso
/
Aminet
/
util
/
moni
/
Scout-src.lha
/
source
/
hexdump.c
next >
Wrap
C/C++ Source or Header
|
2002-09-16
|
11KB
|
298 lines
#include "system_headers.h"
/* /// "khexdump" */
void khexdump( UBYTE *buffer,
LONG size )
{
ULONG cnt;
UBYTE c;
ULONG addr;
addr = 0;
while (size >= 16) {
UWORD bw[8];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 8);
bb = (UBYTE *)&bw[0];
kprintf("%08lx: %04lx %04lx %04lx %04lx %04lx %04lx %04lx %04lx ", addr, bw[0], bw[1], bw[2], bw[3], bw[4], bw[5], bw[6], bw[7]);
for (cnt = 0; cnt < 16; cnt++) {
c = bb[cnt];
kprintf("%lc", isprint(c) ? c : '.');
}
kprintf("\n");
size -= 16;
addr += 16;
buffer += 16;
}
if (size >= 14) {
UWORD bw[8];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 8);
bb = (UBYTE *)&bw[0];
kprintf("%08lx: %04lx %04lx %04lx %04lx %04lx %04lx %04lx ", addr, bw[0], bw[1], bw[2], bw[3], bw[4], bw[5], bw[6]);
for (cnt = 14; cnt < size; cnt++) kprintf("%02lx", bb[cnt]);
for (cnt = size; cnt < 16; cnt++) kprintf(" ");
kprintf(" ");
for (cnt = 0; cnt < size; cnt++) {
c = bb[cnt];
kprintf("%lc", isprint(c) ? c : '.');
}
kprintf("\n");
} else if (size >= 12) {
UWORD bw[7];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 7);
bb = (UBYTE *)&bw[0];
kprintf("%08lx: %04lx %04lx %04lx %04lx %04lx %04lx ", addr, bw[0], bw[1], bw[2], bw[3], bw[4], bw[5]);
for (cnt = 12; cnt < size; cnt++) kprintf("%02lx", bb[cnt]);
for (cnt = size; cnt < 16; cnt++) kprintf(" ");
for (cnt = size/4; cnt < 16/4; cnt++) kprintf(" ");
kprintf(" ");
for (cnt = 0; cnt < size; cnt++) {
c = bb[cnt];
kprintf("%lc", isprint(c) ? c : '.');
}
kprintf("\n");
} else if (size >= 10) {
UWORD bw[6];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 6);
bb = (UBYTE *)&bw[0];
kprintf("%08lx: %04lx %04lx %04lx %04lx %04lx ", addr, bw[0], bw[1], bw[2], bw[3], bw[4]);
for (cnt = 10; cnt < size; cnt++) kprintf("%02lx", bb[cnt]);
for (cnt = size; cnt < 16; cnt++) kprintf(" ");
for (cnt = size/4; cnt < 16/4; cnt++) kprintf(" ");
kprintf(" ");
for (cnt = 0; cnt < size; cnt++) {
c = bb[cnt];
kprintf("%lc", isprint(c) ? c : '.');
}
kprintf("\n");
} else if (size >= 8) {
UWORD bw[5];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 5);
bb = (UBYTE *)&bw[0];
kprintf("%08lx: %04lx %04lx %04lx %04lx ", addr, bw[0], bw[1], bw[2], bw[3]);
for (cnt = 8; cnt < size; cnt++) kprintf("%02lx", bb[cnt]);
for (cnt = size; cnt < 12; cnt++) kprintf(" ");
for (cnt = size/4; cnt < 16/4; cnt++) kprintf(" ");
kprintf(" ");
for (cnt = 0; cnt < size; cnt++) {
c = bb[cnt];
kprintf("%lc", isprint(c) ? c : '.');
}
kprintf("\n");
} else if (size >= 6) {
UWORD bw[4];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 4);
bb = (UBYTE *)&bw[0];
kprintf("%08lx: %04lx %04lx %04lx ", addr, bw[0], bw[1], bw[2]);
for (cnt = 6; cnt < size; cnt++) kprintf("%02lx", bb[cnt]);
for (cnt = size; cnt < 8; cnt++) kprintf(" ");
for (cnt = size/4; cnt < 16/4; cnt++) kprintf(" ");
kprintf(" ");
for (cnt = 0; cnt < size; cnt++) {
c = bb[cnt];
kprintf("%lc", isprint(c) ? c : '.');
}
kprintf("\n");
} else if (size >= 4) {
UWORD bw[3];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 3);
bb = (UBYTE *)&bw[0];
kprintf("%08lx: %04lx %04lx ", addr, bw[0], bw[1]);
for (cnt = 4; cnt < size; cnt++) kprintf("%02lx", bb[cnt]);
for (cnt = size; cnt < 8; cnt++) kprintf(" ");
for (cnt = size/4; cnt < 16/4; cnt++) kprintf(" ");
kprintf(" ");
for (cnt = 0; cnt < size; cnt++) {
c = bb[cnt];
kprintf("%lc", isprint(c) ? c : '.');
}
kprintf("\n");
} else if (size >= 2) {
UWORD bw[2];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 2);
bb = (UBYTE *)&bw[0];
kprintf("%08lx: %04lx ", addr, bw[0]);
for (cnt = 2; cnt < size; cnt++) kprintf("%02lx", bb[cnt]);
for (cnt = size; cnt < 8; cnt++) kprintf(" ");
for (cnt = size/4; cnt < 16/4; cnt++) kprintf(" ");
kprintf(" ");
for (cnt = 0; cnt < size; cnt++) {
c = bb[cnt];
kprintf("%lc", isprint(c) ? c : '.');
}
kprintf("\n");
} else if (size > 0) {
UWORD bw[1];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 1);
bb = (UBYTE *)&bw[0];
kprintf("%08lx: ", addr);
for (cnt = 0; cnt < size; cnt++) kprintf("%02lx", bb[cnt]);
for (cnt = size; cnt < 4; cnt++) kprintf(" ");
for (cnt = size/4; cnt < 16/4; cnt++) kprintf(" ");
kprintf(" ");
for (cnt = 0; cnt < size; cnt++) {
c = bb[cnt];
kprintf("%lc", isprint(c) ? c : '.');
}
kprintf("\n");
}
}
/* \\\ */
/* /// "fhexdump" */
void fhexdump( BPTR fh,
UBYTE *buffer,
LONG size )
{
ULONG cnt;
UBYTE c;
ULONG addr;
addr = 0;
while (size >= 16) {
UWORD bw[8];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 8);
bb = (UBYTE *)&bw[0];
FPrintf(fh, "%08lx: %04lx %04lx %04lx %04lx %04lx %04lx %04lx %04lx ", addr, bw[0], bw[1], bw[2], bw[3], bw[4], bw[5], bw[6], bw[7]);
for (cnt = 0; cnt < 16; cnt++) {
c = bb[cnt];
FPrintf(fh, "%lc", isprint(c) ? c : '.');
}
FPrintf(fh, "\n");
size -= 16;
addr += 16;
buffer += 16;
}
if (size >= 14) {
UWORD bw[8];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 8);
bb = (UBYTE *)&bw[0];
FPrintf(fh, "%08lx: %04lx %04lx %04lx %04lx %04lx %04lx %04lx ", addr, bw[0], bw[1], bw[2], bw[3], bw[4], bw[5], bw[6]);
for (cnt = 14; cnt < size; cnt++) FPrintf(fh, "%02lx", bb[cnt]);
for (cnt = size; cnt < 16; cnt++) FPrintf(fh, " ");
FPrintf(fh, " ");
for (cnt = 0; cnt < size; cnt++) {
c = bb[cnt];
FPrintf(fh, "%lc", isprint(c) ? c : '.');
}
FPrintf(fh, "\n");
} else if (size >= 12) {
UWORD bw[7];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 7);
bb = (UBYTE *)&bw[0];
FPrintf(fh, "%08lx: %04lx %04lx %04lx %04lx %04lx %04lx ", addr, bw[0], bw[1], bw[2], bw[3], bw[4], bw[5]);
for (cnt = 12; cnt < size; cnt++) FPrintf(fh, "%02lx", bb[cnt]);
for (cnt = size; cnt < 16; cnt++) FPrintf(fh, " ");
for (cnt = size/4; cnt < 16/4; cnt++) FPrintf(fh, " ");
FPrintf(fh, " ");
for (cnt = 0; cnt < size; cnt++) {
c = bb[cnt];
FPrintf(fh, "%lc", isprint(c) ? c : '.');
}
FPrintf(fh, "\n");
} else if (size >= 10) {
UWORD bw[6];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 6);
bb = (UBYTE *)&bw[0];
FPrintf(fh, "%08lx: %04lx %04lx %04lx %04lx %04lx ", addr, bw[0], bw[1], bw[2], bw[3], bw[4]);
for (cnt = 10; cnt < size; cnt++) FPrintf(fh, "%02lx", bb[cnt]);
for (cnt = size; cnt < 16; cnt++) FPrintf(fh, " ");
for (cnt = size/4; cnt < 16/4; cnt++) FPrintf(fh, " ");
FPrintf(fh, " ");
for (cnt = 0; cnt < size; cnt++) {
c = bb[cnt];
FPrintf(fh, "%lc", isprint(c) ? c : '.');
}
FPrintf(fh, "\n");
} else if (size >= 8) {
UWORD bw[5];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 5);
bb = (UBYTE *)&bw[0];
FPrintf(fh, "%08lx: %04lx %04lx %04lx %04lx ", addr, bw[0], bw[1], bw[2], bw[3]);
for (cnt = 8; cnt < size; cnt++) FPrintf(fh, "%02lx", bb[cnt]);
for (cnt = size; cnt < 12; cnt++) FPrintf(fh, " ");
for (cnt = size/4; cnt < 16/4; cnt++) FPrintf(fh, " ");
FPrintf(fh, " ");
for (cnt = 0; cnt < size; cnt++) {
c = bb[cnt];
FPrintf(fh, "%lc", isprint(c) ? c : '.');
}
FPrintf(fh, "\n");
} else if (size >= 6) {
UWORD bw[4];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 4);
bb = (UBYTE *)&bw[0];
FPrintf(fh, "%08lx: %04lx %04lx %04lx ", addr, bw[0], bw[1], bw[2]);
for (cnt = 6; cnt < size; cnt++) FPrintf(fh, "%02lx", bb[cnt]);
for (cnt = size; cnt < 8; cnt++) FPrintf(fh, " ");
for (cnt = size/4; cnt < 16/4; cnt++) FPrintf(fh, " ");
FPrintf(fh, " ");
for (cnt = 0; cnt < size; cnt++) {
c = bb[cnt];
FPrintf(fh, "%lc", isprint(c) ? c : '.');
}
FPrintf(fh, "\n");
} else if (size >= 4) {
UWORD bw[3];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 3);
bb = (UBYTE *)&bw[0];
FPrintf(fh, "%08lx: %04lx %04lx ", addr, bw[0], bw[1]);
for (cnt = 4; cnt < size; cnt++) FPrintf(fh, "%02lx", bb[cnt]);
for (cnt = size; cnt < 8; cnt++) FPrintf(fh, " ");
for (cnt = size/4; cnt < 16/4; cnt++) FPrintf(fh, " ");
FPrintf(fh, " ");
for (cnt = 0; cnt < size; cnt++) {
c = bb[cnt];
FPrintf(fh, "%lc", isprint(c) ? c : '.');
}
FPrintf(fh, "\n");
} else if (size >= 2) {
UWORD bw[2];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 2);
bb = (UBYTE *)&bw[0];
FPrintf(fh, "%08lx: %04lx ", addr, bw[0]);
for (cnt = 2; cnt < size; cnt++) FPrintf(fh, "%02lx", bb[cnt]);
for (cnt = size; cnt < 8; cnt++) FPrintf(fh, " ");
for (cnt = size/4; cnt < 16/4; cnt++) FPrintf(fh, " ");
FPrintf(fh, " ");
for (cnt = 0; cnt < size; cnt++) {
c = bb[cnt];
FPrintf(fh, "%lc", isprint(c) ? c : '.');
}
FPrintf(fh, "\n");
} else if (size > 0) {
UWORD bw[1];
UBYTE *bb;
memcpy(&bw[0], buffer, sizeof(UWORD) * 1);
bb = (UBYTE *)&bw[0];
FPrintf(fh, "%08lx: ", addr);
for (cnt = 0; cnt < size; cnt++) FPrintf(fh, "%02lx", bb[cnt]);
for (cnt = size; cnt < 4; cnt++) FPrintf(fh, " ");
for (cnt = size/4; cnt < 16/4; cnt++) FPrintf(fh, " ");
FPrintf(fh, " ");
for (cnt = 0; cnt < size; cnt++) {
c = bb[cnt];
FPrintf(fh, "%lc", isprint(c) ? c : '.');
}
FPrintf(fh, "\n");
}
}
/* \\\ */